/**
vote板块要派发的行为对象管理
voteAction包含很多方法，每一个方法的执行，都要返回派发对象 

 */
import * as TYPES from '../action-types'

// 模拟一个异步的操作 
function dely(interval = 1000) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve()
        }, interval)
    })
}

const voteAction = {
    support() {
        // redux-thunk 中间件语法
        return async (dispatch) => {
            await dely()
            dispatch({
                type: TYPES.VOTE_SUP
            })
        }
    },
    async oppose() {
        // redux-promise中间件
        await dely(2000)
        return {
            type: TYPES.VOTE_OPP
        }
    }
}

export default voteAction
